合并单元格求和,一个函数就搞定了! |
您所在的位置:网站首页 › Excel 合并单元格求和 › 合并单元格求和,一个函数就搞定了! |
今日目标: 合并单元格求和 人要是倒霉啊,写一个SUM函数都能报错。 - SUM函数我会,相对绝对引用我也会! - 但是合在一起,就不会了! 没错,我说的就是合并单元格求和。 比如下面的表格中,要在D列合并单元格中求和,公式长成这样: =SUM(C2:$C$20)-SUM(D3:$D$20) 你能看懂这个公式吗? 看不懂就算了!咱有更好的方法。 1让大家写这个公式,就跟让董宇辉老师跟李佳琦学习卖货一样。 董宇辉是一个老师,擅长的是教学、讲课,旁征博引,传递知识;硬让他学习李佳琦OMG式的卖货,他做不来! 大家平时就是拿表格填一填数,核对一下数据,打印一下报表。非得让你写这样复杂的公式,太难为人了。 我想到了一个方法,把合并单元格求和变的很简单。改善后,公式长成这个样子。 =P_SUM_BY_HEBING(C2) 一个P_SUM_BY_HEBING函数解决问题,不用相对绝对引用,不用减来减去,就一个函数,这下不乱了! 2P_SUM_BYHEBING函数会自动识别出合并单元格的区域,并进行求和。 它有几个参数: sum_cell:必须。要求和的单元格只选1个单元格就可以了,目的是获得求和单元格所在的列。Excel会自动判断求和的区域。 hebing_cell:可选。合并的单元格。在求和的时候,要判断的合并单元格。 如果不设置这个参数,则默认为当前写公式的单元格。 is_by_col:可选。合并单元格是否按列合并的表示合并单元格是否是按照列合并的。有两种结果: - 1。默认:表示合并单元格,是按列合并的。 - 0。表示合并单元格,是按照行合并的。 来看几个例子,立马就能明白! 1- 合并单元格求和按照合并单元格求和,基础用法,公式如下: =P_SUM_BY_HEBING(A100) 公式中,P_SUM_BY_HEBING根据第1个参数,知道了是对A列求和。 因为当前公式是在B2单元格,这个是一个第2~3行的合并单元格。 此时P_SUM_BY_HEBING会自动识别出,求和的区域是A列,第2~3行的区域。即A2:A3,并进行求和计算。 2- 按照指定合并单元格求和下面的案例中,按照B列合并单元格求和,计算结果填写到C列。 =P_SUM_BY_HEBING(C2,A2) 计算原理是类似的: 1- 第1个参数,确定出要求和的是C列的单元格。 2- 第2个参数,识别出求和的行是第2~3行。 这样综合得出求和区域是C2:C3单元格,计算后结果返回到D2单元格。 有趣的是,P_SUM_BY_HEBING函数会自动识别第1个参数中的合并单元格,只要这个单元格,在合并单元格区域中就可以了。 3- 横向合并单元格求和下面的公式,对横向的合并单元格快速求和。 通过设置第3个参数为0,可以对横向合并的单元格求和。 =P_SUM_BY_HEBING(B1,,0) 公式的用法也是完全一样的。Excel自动识别出合并单元格,并进行求和。 总结如何获得函数?P_SUM_BY_HEBING函数的代码如下,复制粘贴到你的VBA中,就可以使用了。 Function P_SUM_BY_HEBING(ByVal sum_cell As Range, Optional ByVal hebing_cell As Range, Optional ByVal is_by_col As Integer = 1) Dim thisCell As Range, new_area As Range, first_cell As Range, cells_count As Integer Dim sr As Long, sc As Long, fr As Long, fc As Long If Not hebing_cell Is Nothing Then Set thisCell = hebing_cell Else Set thisCell = Application.thisCell End If Set first_cell = thisCell.MergeArea.Cells(1, 1) sr = sum_cell.Row sc = sum_cell.Column fr = first_cell.Row fc = first_cell.Column If thisCell.MergeCells Then If is_by_col = 0 Then cells_count = thisCell.MergeArea.Columns.Count - 1 Set new_area = Range(Cells(sr, fc), Cells(sr, fc + cells_count)) Else cells_count = thisCell.MergeArea.Rows.Count - 1 Set new_area = Range(Cells(fr, sc), Cells(fr + cells_count, sc)) End If P_SUM_BY_HEBING = WorksheetFunction.Sum(new_area) Else P_SUM_BY_HEBING = sum_cell End IfEnd Function 下载案例文件你也可以关注公众号【拉小登Excel】,后台回复【合并求和】,下载准备好的案例文件,双击打开就可以使用了。 我是拉小登,一个爱梳头的Excel老师 如果这篇文章对你有帮助,请帮忙「点赞」「在看」「转发」。 这对我很重要,能给拉小登更多动力,持续分享优质的内容。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |